<?/***  Визуальный редактор TinyMCE  ***/?>

<? // вычисляем необходимые пути и URL 
// $doc_root	= str_replace('\\','/', $_SERVER['DOCUMENT_ROOT']);
// $file_path 	= str_replace('\\','/', __FILE__); 
// $script_path =  $doc_root . str_replace('\\','/', $_SERVER['PHP_SELF']); 
// $folder_path = dirname($file_path);
// $folder_url =  str_replace($doc_root, '', $folder_path );

$editor_lang = Admin::$Config->lang;
$folder_url = MODULES_URL.'/tinymce';
global $lang;
// pr($lang);  
// pr(MODULES_URL);

?>

<?// загружаем основной скрипт ?>
<script type="text/javascript" src="<?=$folder_url?>/tinymce/tiny_mce.js"></script>


<?/*** Конфигурация TinyMCE  ***/?>
<script>
//<![CDATA[
//Документация: http://wiki.moxiecode.com/index.php/TinyMCE:Configuration

tinyMCE.init({
	mode : "specific_textareas", // преобразуем только выбранные Textarea
	editor_selector : "wysiwyg", // с классом  class="wysiwyg"
	entity_encoding : "raw",  
	relative_urls : false, // все URL конвертируем в абсолютные
	language : '<?=$editor_lang?>', 
	theme : "advanced",
	width : "100%",
	height: 300,
	
	cleanup : true, // встроенная очистка HTML кода при сохранении, по умолчанию true
	
	cleanup_on_startup : false, // If you set this option to true, TinyMCE will perform a HTML cleanup call when the editor loads. This option is set to false by default.
	
	paste_auto_cleanup_on_paste : true, // [plugin:paste] If enabled contents will be automatically processed when you paste using Ctrl+V or similar methods. This is enabled by default.
	
	paste_convert_headers_to_strong : false, // [plugin:paste] 
	paste_strip_class_attributes : "all", // [plugin:paste]  Enables you to strip the class attributes when pasted. Valid option values are "none", "all", and "mso". In the release 3.2.6 the default value was "all", in the current development version it is "none".
	
	paste_remove_spans : false, //[plugin:paste] Enables you to remove all span elements while pasting. Defaults to false.
	
	// удалять стили при вставке (TODO: сделать настройку в админке ) 
	paste_remove_styles : true, // [plugin:paste] If true, removes all style information when pasting, regardless of browser type. Default is false.

	paste_remove_styles_if_webkit: true, // [plugin:paste] If true, removes all style information when pasting in WebKit enjine (in Google Chrome) since it has a serious paste bug. Default is false.
	
	remove_linebreaks : false, 
	
	// CSS файл для отображения области редактирования (дополняющий CSS темы)
	//content_css: "<?=$folder_url?>/files/editor_content.css?"+Math.random(),
    
	<?
	// подключаем к редактору стили для фрейма редактора и стили для контентной области сайта
	$css1 = $folder_url 
			.'/files/editor_content.css?' .rand(1,1000);
	$css2 = Config('site')->design_url 
			.'/files/content.css?' .rand(1,1000);
	?>
	content_css: "<?=$css1?>,<?=$css2?>",
	
	
	
	file_browser_callback : "FileManager",
	
	theme_advanced_blockformats : "p,div,h1,h2,h3,h4,h5,h6,code",
    //blockquote,dt,dd,code,samp",
	
	plugins : "table,paste,safari, save" , //media,,,,fullscreen
    
    
	save_enablewhendirty : true,
	save_onsavecallback : "Wysiwyg.save",
	
	<? // первый ряд кнопок 
	$buttons1 = array(
		'save','cancel', 'bold', 'italic', 'underline', 'strikethrough','sub','sup',
		'separator', 'justifyleft', 'justifycenter', 'justifyright',
		'separator', 'formatselect', 'fontsizeselect','styleselect' ,'blockquote','hr'
	);
	?>
	theme_advanced_buttons1 : "<?=implode(',', $buttons1)?>",
	
	<? // второй ряд кнопок
	$buttons2 = array(
		'cut', 'copy', 'paste' ,'pastetext','pasteword','separator',
		'undo', 'redo', 'separator', 'bullist',
		'numlist', 'outdent', 'indent', 'separator',
		'link', 'unlink', 'anchor', 'image',
		'media', 'separator', 'forecolor', 
		'backcolor', 'separator', 'code', 'cleanup','removeformat'
		//,'table'
		//,'tablecontrols'
		//,'fullscreen'
	);
	?>
	
	<? // третий ряд кнопок
	// TODO: сделать настройку в админке  вкл/выкл табличные кнокпи 
	$buttons3 = array(
		'table'
		,'tablecontrols'
		//,'fullscreen'
	);
	?>
	
	theme_advanced_buttons2 : "<?=implode(',', $buttons2)?>",
	theme_advanced_buttons3 : "<?=implode(',', $buttons3)?>",
	theme_advanced_toolbar_location : "top", // положение тулбара
	theme_advanced_toolbar_align : "left", // выравнивание кнопок
	theme_advanced_path_location : "bottom",
	theme_advanced_resizing : true,
	theme_advanced_resize_horizontal : false,
	
	
'':''})
//]]>
</script>




<script>

 
Wysiwyg.save = function(ed)
{
	var formObj = tinymce.DOM.get(ed.id).form ||  tinymce.DOM.getParent(ed.id, 'form');
	
	//alert(formObj)
	
	return saveform(formObj)
	
}
 
 

 /* FileManager(field_name, url, type, win)
	This function is executed each time a user clicks on the "browse" buttons in various dialogues. 
	
	@params:
	field_name  - is the id/name of the form element that the browser should insert its URL into. 
	url 		- parameter contains the URL value that is currently inside the field. 
	type 		- parameter contains what type of browser to present: file / image /  flash (depending on what dialogue is calling the function). 
	win 		- parameter contains a reference to the dialog/window object that executes the function. 
*/

FileManager_url='<?=Files::$Config->filemanager_url ?>?callback=FileManager&callback_mini=1'
FileManager_field = false
function FileManager(field_name, url, type, win)
{
	
	
	if (win) // режим вызова файл-менеджера
	{
		win.FileManager = this
		
		// получаем ссылку на поле, в которое нужно вставит ссылку на файл 
		FileManager_field = win.document.forms[0].elements[field_name]
		
		wSize=getWindowSize()
		wSize.w = Math.max(wSize.w,700)
		winFM = win.open(FileManager_url, 'FM', 'location=no, toolbar=yes, directories=no, menubar=yes, resizable=yes, scrollbars=yes, status=yes, top=0,left=50,width='+(wSize.w-100)+', height='+(wSize.h-70)); 
		
		
		
		
	}
	else // режим возврата из файл-менеджера
	{
		// alert(field_name)
		if (url) 		FileManager_url = url; // последняя посещенная папка в файл-менеджере
		if (field_name) FileManager_field.value = field_name; // ссылка на выбранный файл
	}
}	
	
	



/* editor tools */
function insert_page_link() {
	var id = document.getElementById('insert_pages');
	var page = id.selectedIndex;
	var file = id.options[page].value;
	var title = id.options[page].text;

	//Remove indent space.
	//@fixme Not the best way to do it, but it works.
	//alert(title);
    //title= title.replace(/\s+/,' ');
    title = escape(title);
	//alert(title)
    
    //title = title.replace(/%u2003/g, '');
    title = title.replace(/%A0/g, '');
	title = unescape(title);

	tinyMCE.execCommand('mceInsertContent',false,'<a href="index.php?file=' + file + '" title="' + title + '">' + title + '<\/a>');
}

function get_selected_file()
{
    return $('file4insert').value
    
}


function insert_image_full(dir) {
	/* 
    var id = document.getElementById('insert_images');
	var image = id.selectedIndex;
	var file = id.options[image].value;
    */
	var file=get_selected_file(); 
    if (file)
    tinyMCE.execCommand('mceInsertContent',false,'<img src="'+file + '" alt="" \/>');
}

function insert_image_thumb(dir, is_link) 
{
	var file=get_selected_file(); 
    if (!file) return

	//alert(file)
	
    if (!window.insert_image_thumb_width)
		window.insert_image_thumb_width = 200;
	var prompt_text= "<?=$lang['page']['thumb_width']?>"
	
	window.insert_image_thumb_width = prompt(prompt_text, insert_image_thumb_width)
	
	var w= window.insert_image_thumb_width
	
	tinyMCE.execCommand('mceInsertContent',false, 
        (is_link? '<a href=" ' + file + '" >'  :'')
		+'<img src="system/public/thumb.php?img=' 
		+ file 
		+ '&width='+w+'" alt="" \/>'
		+(is_link? '</a>'  :'')
    );
}

function insert_image_link(dir) {
    insert_image_thumb(dir, true)  
    
}

function insert_file_link(dir) {
    var file=get_selected_file(); 
	//alert(file)
    if (file)
    //tinyMCE.execCommand('mceInsertContent',false, 
      //  '<a href="' + dir + '/' + file + '" >' + file + '</a>' );
    tinyMCE.execCommand('mceInsertLink',false,  file  );
}

// toggle size of editor
function toggleEditor(fieldname, text1, text2)
{
    
    
    var objTable = $(fieldname+'_canvastable')
    var objTitle = $(fieldname+'_fieldtitle')
    var objLink = $(fieldname+'_toggleeditor_link')
    var edTable = $(fieldname+'_tbl')
    var edFrame = $(fieldname+'_ifr')
    
    var bod=document.body;
    var winsize = getWindowSize();
    
    if (objTable.style.width!='100%')
    {
        //objLink.style.position='relative'
        
        
        bod.style.overflow='hidden'
        bod.style.height='100%'
        
        $('menuheader').style.visibility='hidden'
        
        objTable.style.width='100%';
        objLink.innerHTML = text2;
        
        //showHidePanel(fieldname)
		
		
        edFrame.style.height= (winsize.h-130)+'px'
        
        objTitle.scrollIntoView()
        
        //objLink.style.position='absolute'


    }
    else  
    {
        
        bod.style.overflow='auto'
        bod.style.height='auto'
        
        
        objTable.style.width='';
        objLink.innerHTML = text1;
        objLink.style.visibility='visible'
        //showHidePanel(fieldname)
        
        edFrame.style.height='300px'
        edTable.style.height=''
        
        
        setTimeout(function(){$('menuheader').style.visibility='visible';}, 10);
        
        
    } 
    
}

// show / hide rightpanel for wisiwig editor
function showHidePanel(fieldname, lnk)
{
    showHide(fieldname+"_rightpanel"); 
    
    lnk = $(fieldname+'_togglePanel_link')
    if (lnk.innerHTML=="►") 
        lnk.innerHTML="◄"; 
    else 
        lnk.innerHTML="►";
    
    lnk.blur();
}



</script>

<script>
	
/*******
Дополняем класс Wysiwyg - 
индивидуальные методы, зависимые от выбранного визуального редактора
*******/
		
		// устанавливает размер визуального редактора 
		Wysiwyg.setSize = function(fieldname, width, height)
		{
			//tinyMCE.get(fieldname).theme.resizeTo(width, height) // некорретно работает в Firefox - внутренний фрейм не растягивает на всю доступную высоту
			
			var container = $(fieldname+'_tbl'),
				frame = $(fieldname+'_ifr'),
				toolbar = getElementsByTagName('TD', container)[0] ,
				statusbar = getElementsByClassName('mceStatusbar', container)[0]
			//alert(toolbar.offsetHeight)
			
			setStyles(container, {width: width+'px', height: height+'px'})
						
			setStyles(frame, 
				{
					width: width+'px', 
					height: (height-toolbar.offsetHeight-statusbar.offsetHeight-4)+'px'  
				})
			
		}
		// получает размер визального редактора
		Wysiwyg.getSize = function(fieldname)
		{
			var container = $(fieldname+'_tbl')
			return {h: container.offsetHeight, w: container.offsetWidth }
		}
		// скролит окно к верхней границе редактора
		Wysiwyg.scrollToTop = function(fieldname) 
		{	
			if(!fieldname) fieldname = this.fieldname
			$(fieldname + '_tbl').scrollIntoView()
		}
		// вставляет HTML код в активный редактор
		Wysiwyg.insertHTML = function(html) 
		{	
			tinyMCE.execCommand('mceInsertContent',false, html);
		}
		// делает из выделенного текста ссылку
		Wysiwyg.makeLink = function(url) 
		{	
			tinyMCE.execCommand('mceInsertLink',false, url);
		}
		 

		
		/*******/
		
	
		</script>
